package com.wan37.logic.fighting.auto;

import com.wan37.logic.domain.vo.SkillVO;
import com.wan37.protobuf.message.client2server.game.GameEntity;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.PriorityBlockingQueue;

/**
 * @author : luoyong
 * @date : 2020-06-09 10:13
 **/
@Component
public class AutoSkillServiceManager {

    public static boolean stop = false;

    /**
     * 存放当前实体id可以释放技能的map
     */
    public static volatile Map<String, PriorityBlockingQueue<SkillVO>> allRoleIdToPBQMap = new ConcurrentHashMap<>();

    /**
     * 根据传入的一个实体Id,获取优先级技能队列，从队列中拿到一个技能
     *
     * @param allRoleId
     * @return
     */
    public SkillVO getPbqSkill(String allRoleId) {
        return allRoleIdToPBQMap.get(allRoleId).poll();
    }

    /**
     * 通过实体id从实体id对应的优先级别技能队列中获取对应队列，将skill放入队列中
     *
     * @param allRoleId
     * @param skillVO
     * @return
     */
    public boolean addPbqSkill(String allRoleId, SkillVO skillVO) {
        return allRoleIdToPBQMap.get(allRoleId).offer(skillVO);
    }

    /**
     * @param allRoleId
     */
    public void addAllRoleIdToPBQMap(String allRoleId) {
        allRoleIdToPBQMap.put(allRoleId,
                new PriorityBlockingQueue<>(10, (s1, s2) -> s2.getPriority() - s1.getPriority()));
    }

    public static void clearAllRoleIdToPBQMap() {
        allRoleIdToPBQMap.clear();
    }

}
